#!/usr/bin/env python3
"""
简单的注意力检测器测试脚本

用于验证 AttentionDetector 是否能正常工作，不依赖摄像头。
"""

import sys
import os
import numpy as np

# 添加项目根目录到路径
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))

def test_attention_detector():
    """测试注意力检测器的基本功能"""
    print("=" * 50)
    print("注意力检测器基本功能测试")
    print("=" * 50)
    
    try:
        from kidsbuddy.vision.attention_detector import AttentionDetector
        print("✓ 成功导入 AttentionDetector")
    except ImportError as e:
        print(f"✗ 导入失败: {e}")
        return False
    
    # 测试初始化
    try:
        detector = AttentionDetector(
            model_path="yolo11n-pose.pt",
            conf_threshold=0.3,
            history_window=30,
            movement_threshold=5.0,
            stability_threshold=90
        )
        print("✓ 检测器初始化成功")
    except Exception as e:
        print(f"✗ 检测器初始化失败: {e}")
        print("注意：这可能是因为缺少 YOLO 模型文件或相关依赖")
        return False
    
    # 测试重置历史功能
    try:
        detector.reset_history()
        print("✓ 历史重置功能正常")
    except Exception as e:
        print(f"✗ 历史重置功能失败: {e}")
        return False
    
    # 测试处理空图像
    try:
        # 创建一个模拟图像（黑色图像）
        test_image = np.zeros((480, 640, 3), dtype=np.uint8)
        status, reasons, keypoints_data, features = detector.process_frame(test_image)
        print(f"✓ 图像处理功能正常")
        print(f"  - 状态: {status}")
        print(f"  - 原因数量: {len(reasons)}")
        print(f"  - 特征数量: {len(features)}")
    except Exception as e:
        print(f"✗ 图像处理功能失败: {e}")
        return False
    
    # 测试统计功能
    try:
        summary = detector.get_attention_summary(window_size=10)
        print("✓ 统计功能正常")
        if "insufficient_data" in summary:
            print("  - 数据不足（正常，因为只处理了一帧）")
        else:
            print(f"  - 专注度: {summary.get('focus_percentage', 'N/A')}%")
    except Exception as e:
        print(f"✗ 统计功能失败: {e}")
        return False
    
    print("\n" + "=" * 50)
    print("✓ 所有基本功能测试通过！")
    print("=" * 50)
    return True

def main():
    """主函数"""
    success = test_attention_detector()
    
    if success:
        print("\n🎉 测试成功！注意力检测器工作正常。")
        print("\n下一步可以尝试：")
        print("1. 运行摄像头演示: python examples/attention_detection_demo.py")
        print("2. 运行完整测试: python tests/test_attention_detector_realtime.py")
    else:
        print("\n❌ 测试失败！请检查依赖安装和模型文件。")
        print("\n故障排除建议：")
        print("1. 确保安装了所有依赖: pip install -r requirements.txt")
        print("2. 下载 YOLO 模型文件: yolo11n-pose.pt")
        print("3. 检查 Python 版本 (建议 3.8+)")
    
    return success

if __name__ == "__main__":
    main()
